package com.itcam.imitate;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

// 定义一个复杂的机器人
class AdvancedRobot extends Robot {  // 继承自之前故事中的 Robot 类
    public String model = "X-1000";
    protected int version = 3;
    private String secretCode = "JAVA_REFLECTION_ROCKS";
}

public class FieldScanner {
    public static void main(String[] args) {
        // 获取 AdvancedRobot 的全息扫描数据
        Class<?> robotClass = AdvancedRobot.class;

        System.out.println("🔍 开始全息扫描...");
        Field[] allFields = robotClass.getDeclaredFields();

        Field[] fields = robotClass.getFields();
        System.out.println(fields.length);
        for (Field field : fields) {
            System.out.println(Modifier.isPublic(field.getModifiers()));
        }

        // 遍历所有字段
        for (Field field : allFields) {
            String access = getAccessModifier(field.getModifiers());
            String type = field.getType().getSimpleName();
            System.out.printf("发现零件：%s | 类型：%s | 访问权限：%s\n",
                    field.getName(), type, access);
        }
    }

    // 辅助方法：将修饰符转换为可读字符串
    private static String getAccessModifier(int modifiers) {
        if (Modifier.isPrivate(modifiers)) return "private";
        if (Modifier.isProtected(modifiers)) return "protected";
        if (Modifier.isPublic(modifiers)) return "public";
        return "default";
    }
}